package ar.com.conversor.vistas;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import ar.com.conversor.ObjetoAConvertir;

public class MenuPrincipal extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JTextField videoACopiar;
	private JTextField subtitulos;
	private JTextField videoFinal;
	private JButton botonOriginal, botonSubtitulos, botonFinal, aceptar,
			agregarALista;
	private MenuPrincipal contexto;

	private LinkedList<ObjetoAConvertir> lista = new LinkedList<ObjetoAConvertir>();

	public MenuPrincipal() {

		contexto = this;


		
		
		setLayout(new FlowLayout());
		JPanel panel1 = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		JPanel panel4 = new JPanel();
		JPanel panel5 = new JPanel();

		add(panel1);
		add(panel2);
		add(panel3);
		add(panel4);
		add(panel5);

		aceptar = new JButton("Aceptar");
		botonOriginal = new JButton("seleccionar");
		botonSubtitulos = new JButton("seleccionar");
		botonFinal = new JButton("seleccionar");
		agregarALista = new JButton("+");
		videoACopiar = new JTextField("", 20);

		videoACopiar.setEditable(false);
		subtitulos = new JTextField("", 20);
		subtitulos.setEditable(false);
		videoFinal = new JTextField("", 20);

		videoACopiar.setText("");
		subtitulos.setText("");
		videoFinal.setText("");

		panel1.add(new JLabel("video Original"));
		panel1.add(videoACopiar);
		panel1.add(botonOriginal);

		panel2.add(new JLabel("subtitulos"));
		panel2.add(subtitulos);
		panel2.add(botonSubtitulos);

		panel3.add(new JLabel("videoFinal"));
		panel3.add(videoFinal);
		panel3.add(botonFinal);

		panel4.add(aceptar);

		panel5.add(new JLabel("agregar"));
		panel5.add(agregarALista);

		setSize(550, 178);
		setVisible(true);
		setLocation(200, 200);

		agregarALista.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				if (!(videoACopiar.getText() != ""
						&& subtitulos.getText().equals("") && videoFinal
						.getText() != "")) {
					lista.add(new ObjetoAConvertir(videoACopiar.getText(),
							subtitulos.getText(), videoFinal.getText()));
					videoACopiar.setText("");
					subtitulos.setText("");
					videoFinal.setText("");
				} else {

					JOptionPane.showMessageDialog(null,
							"tenes que completar todos los campos");

				}

			}
		});

		botonOriginal.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				JFileChooser fc = new JFileChooser();
				// Mostrar la ventana para abrir archivo y recoger la respuesta
				// En el parámetro del showOpenDialog se indica la ventana
				// al que estará asociado. Con el valor this se asocia a la
				// ventana que la abre.
				int respuesta = fc.showOpenDialog(null);
				// Comprobar si se ha pulsado Aceptar
				if (respuesta == JFileChooser.APPROVE_OPTION) {
					// Crear un objeto File con el archivo elegido
					videoACopiar
							.setText(fc.getSelectedFile().getAbsolutePath());
					// Mostrar el nombre del archvivo en un campo de texto

				}

			}
		});
		botonFinal.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				JFileChooser fc = new JFileChooser();
				// Mostrar la ventana para abrir archivo y recoger la respuesta
				// En el parámetro del showOpenDialog se indica la ventana
				// al que estará asociado. Con el valor this se asocia a la
				// ventana que la abre.
				int respuesta = fc.showSaveDialog(null);
				// Comprobar si se ha pulsado Aceptar
				if (respuesta == JFileChooser.APPROVE_OPTION) {
					// Crear un objeto File con el archivo elegido
					videoFinal.setText(fc.getSelectedFile().getAbsolutePath());
					// Mostrar el nombre del archvivo en un campo de texto

				}

			}
		});

		botonSubtitulos.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				JFileChooser fc = new JFileChooser();
				// Mostrar la ventana para abrir archivo y recoger la respuesta
				// En el parámetro del showOpenDialog se indica la ventana
				// al que estará asociado. Con el valor this se asocia a la
				// ventana que la abre.
				int respuesta = fc.showOpenDialog(null);
				// Comprobar si se ha pulsado Aceptar
				if (respuesta == JFileChooser.APPROVE_OPTION) {
					// Crear un objeto File con el archivo elegido
					subtitulos.setText(fc.getSelectedFile().getAbsolutePath());
					// Mostrar el nombre del archvivo en un campo de texto

				}

			}
		});

		aceptar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				JFrame consola = new JFrame();
				JPanel panelconsola = new JPanel();
				panelconsola.setLayout(new FlowLayout());
				JTextField texto = new JTextField("", 300);
				panelconsola.add(texto);
				consola.add(panelconsola);
				consola.setVisible(true);
				consola.setLocation(300, 300);
				consola.setSize(400, 150);
				consola.add(texto);

				for (ObjetoAConvertir objeto : lista) {

					String cmd = "mencoder -ovc lavc -lavcopts vcodec=mpeg4 -oac copy "
							+ objeto.getOriginal()
							+ " -o "
							+ objeto.getDestino()
							+ " -sub "
							+ objeto.getSubititulos()
							+ " -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -subfont-autoscale 1"; // Comando
																													// de
																													// apagado
																													// en
																													// windows
					System.out.println(cmd);

					try {
						Process p = Runtime.getRuntime().exec(cmd);
						BufferedReader stdInput = new BufferedReader(
								new InputStreamReader(p.getInputStream()));

						BufferedReader stdError = new BufferedReader(
								new InputStreamReader(p.getErrorStream()));

						// Leemos la salida del comando
						System.out
								.println("Ésta es la salida standard del comando:\n");
						String s = null;
						while ((s = stdInput.readLine()) != null) {
							System.out.println(s);
							texto.setText(s);
						}

					} catch (IOException e1) {
						// TODO Auto-generated catch block
						System.out.println(e1);
						e1.printStackTrace();
					}
					
					
					 String cmd2 = "ffmpeg -i "+objeto.getDestino()+" -codec copy "+objeto.getDestino()+".mp4";

					 JOptionPane.showMessageDialog(null, "se va la segunda");
					 
					 try {
							Process p = Runtime.getRuntime().exec(cmd2);
							BufferedReader stdInput = new BufferedReader(
									new InputStreamReader(p.getInputStream()));

							BufferedReader stdError = new BufferedReader(
									new InputStreamReader(p.getErrorStream()));

							// Leemos la salida del comando
							System.out
									.println("Ésta es la salida standard del comando:\n");
							String s = null;
							while ((s = stdInput.readLine()) != null) {
								System.out.println(s);
								texto.setText(s);
							}

						} catch (IOException e1) {
							// TODO Auto-generated catch block
							System.out.println(e1);
							e1.printStackTrace();
						}
					 
					 
					 
					 
					 
					JOptionPane.showMessageDialog(null, "completado!!");

				}

			}
		});

	}

}
